package promotion.model;

import java.util.ArrayList;
import java.util.List;
import org.jdom.Element;

/**
 * Classe représentant un étudiant
 * @author marya
 */
public class Etudiant {

    private Integer idEtudiant;
    private String nom;
    private String prenom;
    private List<Email> emails;
    private List<Telephone> tels;
    private Adresse adresse;

    /**
     * Constructeur ne prenant en compte que l'id de l'étudiant
     * @param idEtudiant
     */
    public Etudiant(Integer idEtudiant) {
        this.idEtudiant = idEtudiant;
        this.emails = new ArrayList<Email>();
        this.tels = new ArrayList<Telephone>();
    }


    public Etudiant(String nom, String prenom, Adresse adresse) {
        this.nom = nom;
        this.prenom = prenom;
        this.adresse = adresse;
        this.emails = new ArrayList<Email>();
        this.tels = new ArrayList<Telephone>();
    }

    public Integer getIdEtudiant() {
        return idEtudiant;
    }

    public void setIdEtudiant(Integer idEtudiant) {
        this.idEtudiant = idEtudiant;
    }

    public Adresse getAdresse() {
        return adresse;
    }

    public void setAdresse(Adresse adresse) {
        this.adresse = adresse;
    }

    public List<Email> getEmails() {
        return emails;
    }

    public void setEmails(List<Email> emails) {
        this.emails = emails;
    }

    public String getNom() {
        return nom;
    }

    public void setNom(String nom) {
        this.nom = nom;
    }

    public String getPrenom() {
        return prenom;
    }

    public void setPrenom(String prenom) {
        this.prenom = prenom;
    }

    public List<Telephone> getTels() {
        return tels;
    }

    public void setTels(List<Telephone> tels) {
        this.tels = tels;
    }

    @Override
    public String toString() {
        return "promotion.model.Etudiant[" + this.idEtudiant + ":" + this.nom + "]";
    }

    /**
     * Permet à une instance de cette classe de
     * générer elle-même l'element JDOM lui correspondant
     * @return element JDOM
     */
    public Element toJDOMElement() {
        Element racine = new Element("etudiant");

        Element eNom = new Element("nom");
        eNom.setText(nom);
        racine.addContent(eNom);

        Element ePrenom = new Element("prenom");
        ePrenom.setText(prenom);
        racine.addContent(ePrenom);

        Element eTels = new Element("tels");
        if (tels != null && !tels.isEmpty()) {
            for (Telephone tel : tels) {
                eTels.addContent(tel.toJDOMElement());
            }
        }
        racine.addContent(eTels);

        Element eEmails = new Element("emails");
        if (emails != null && !emails.isEmpty()) {
            for (Email email : emails) {
                eEmails.addContent(email.toJDOMElement());
            }
        }
        racine.addContent(eEmails);
        racine.addContent(adresse.toJDOMElement());
        return racine;
    }
}
